查看原文
其他

人物|李忠:AI面试机器人打造智能化招聘

李忠 58AILab 2023-12-21


2021年7月30日-7月31日,第七届全球互联网架构大会在深圳如期举行。全球互联网架构大会(简称“GIAC”)是长期关注互联网技术与架构的高可用架构技术社区和msup推出的面向架构师、技术负责人及高端技术从业人员的年度技术架构大会,是中国地区规模最大的技术会议之一。

第七届GIAC会议,共涉及24个专题,84个议题,参与人数达1000多人,组委会从互联网架构热门的前沿趋势、云原生、智能数据、爆款架构演进、卓越工程实践等领域甄选前沿的有典型代表的技术创新及研发实践的架构案例,分享他们在本年度值得的总结、盘点的实践启示,打造一个分享及讨论平台,帮助和指导听众了解和改进互联网构建方式。

58同城TEG AI Lab 智能语音部负责人李忠受邀出席,并在AI实践专题下分享了《AI面试机器人打造智能化招聘》。

本文根据分享实录整理,欢迎大家阅读分享。


01

 背景 

58同城是国内领先的生活分类信息网站平台涉及业务有招聘、房产、车、本地生活服务(黄页)等,2020年开始由于新冠疫情的影响,人们的生活工作方式有较大的变化,以招聘为例,传统的线下招聘面试方式受到了较大的冲击,平台上求职者通过微聊、视频等在线化面试请求量急增,由于一位招聘者在同一时刻只能与一位求职者建立在线化的视频面试渠道,导致求职者、招聘者两端链接成功率较低。为了提升求职者用户体验、提高招聘者面试效率,58同城TEG AI Lab与招聘业务线等多个部门协同打造了一款智能化招聘面试工具:神奇面试间,该产品主要由三大部分组成:客户端、音视频通信、AI面试机器人。本文将主要聚焦在AI面试机器人上,AI面试机器人利用了灵犀智能语音语义平台的人机语音对话能力模拟招聘者与求职者进行多轮语音沟通,达到在线化面试的效果。一方面可解决一位招聘者只能响应一位求职者的在线化面试请求,提升招聘者作业效率;另一方面能满足求职者能不限时间、地点进行视频面试,同时将个人简历从传统的文字描述介绍转换成更加直观生动的视频化自我展示。本文将详细阐述AI面试机器人的整体架构设计及其各核心模块的实现方式。

02

AI面试机器人总体概览

AI面试语音多轮对话交互形态
AI面试机器人一方面要达到模拟招聘者与求职者完成在线化视频面试流程目的, 另一方面要贴近较为真实的视频面试场景,因此AI面试的语音交互流程设计主要采用交互问答的形式进行,具体如下:首先由求职者在客户端发起面试请求,AI面试机器人收到消息后会根据招聘者预先设置好的面试开场白与第一道面试问题如询问用户姓名、年龄等基本信息通过语音信号下发到客户端,同时在客户端通过文本形式展示相关内容,其次当求职者收到面试试题后,求职者会像真实视频面试一样对招聘者提出的问题进行回答,就这样由AI面试机器人按照预先设置好的试题顺序进行主导式提问,求职者依次进行回答来展开面试,待AI机器人将所有面试问题提问完成后,人机对话将进入职位问答环节,由求职者向AI面试机器人提问关于职位相关问题,AI面试机器人进行回答,最后在面试结束后AI面试机器人将针对对话内容提取求职者到岗时间、是否求职、是否有经验等相关个人求职信息用于招聘者高效匹配候选人,下图是具体示例:


03

AI面试机器人整体架构介绍


语音交互接入层:主要是涉及与音视频的交互,通信资源管理等,是维护与用户端进行语音信息交流的纽带桥梁。语音交互逻辑层:此模块涉及到了多个小的功能模块,其中对话管理器用于总体控制AI面试机器人如何响应用户输入,职位问答用于响应求职者关于职位相关的询问,意图识别用于识别用户输入意图,面试问题切换用于帮助机器人决定何时进行面试问题间的切换,对话内容定位是为最后的视频面试简历标记关键问答的时间戳信息(如在某段时间涉及范围内求职者回答了关于上份工作经历的内容)方便招聘者快速浏览用户回答特定问题的内容,关键信息提取是针对求职者与机器人对话文本内容进行分析求职者的职业信息的画像,涉及最快到岗时间、过往是否从事过当前职位经历、目前在职状态等用于提升招聘者通过条件设置匹配合适候选人的效率。基础服务层:此模块主要包含语音识别与语音合成两大语音技术基础模块。其中语音识别是将用户的音频信号转换成文本数据,语音合成则是将文本数据转换成音频信号,前者是让AI面试机器人能“听得见”用户所说,后者是让机器人能“说得出”, 语音识别目前是我们基于Kaldi框架打造的自研语音识别引擎,效果上相比第三方更出色。数据层:该模块主要涉及数据存储、传输、检索的功能,如录音数据、面试问题、日志信息等存储传输等。
Web管理平台:该平台提供了数据标注用于优化意图识别、实体提取、对话管理评价的标注功能,同时在平台上可根据实际需要配置对话策略、面试试题提问顺序配置等功能。A/B Test 平台:该平台提供了多层策略进行A/B Test流量分发的能力,算法工程师可以通过该平台上进行可视化的配置各层策略的流量分配比例如为比较不同意图识别模型效果、关键信息提取方式效果好坏等,能满足不同层策略上流量分发正交的要求。人工智能平台(WPAI):该平台是58同城TEG AI Lab研发打造的一款支持深度学习和机器学习功能,集特征工程 、模型训练和在线预测为一体的一站式算法研发平台,AI面试机器中涉及如意图识别、实体提取等模型训练都由该平台提供稳定可靠的训练、推理服务,详细可参考<<58同城AI算法平台的演进与实践>>,关于其推理的服务的开源项目见<<开源|dl_inference:通用深度学习推理服务》(链接:https://github.com/wuba/dl_inference)

04

AI面试机器人核心模块实现

语音识别:

语音识别是一种将语音信号转换成文本的技术,是人机语音交互必不可少的环节,该技术保障了AI面试机器人能“听得见”用户所说,同时在语音交互场景中机器要能根据用户输入信号做实时响应,因此需要流式语音识别技术。语音识别技术是一项极其复杂的技术,整体流程中首先将语音信号通过提取声学特征,再经过声学特征训练得到声学模型,经过场景数据训练得到语言模型及其构建发音字典,最后解码阶段会结合声学模型输出、发音字典、语言模型获取每段音频信号对应的文本数据。58同城自研语音识别引擎是基于Kaldi框架进行打造的,可参考<<3人半年打造语音识别引擎-58同城语音识别自研之路>>,在声学模型方面使用chain model进行迁移学习解决AI面试智能化招聘场景下对话数据较少的问题,同时充分利用了本场景下用户语料,扩充了发音字典。最后我们自研的流式语音识别引擎在字错率上相比市面二大厂通用语音识别引擎分别低2.61%、1.41%。问题智能切换:
在面试过程中,当用户回答完一个面试试题的时候,机器需要将下一面试试题下发到用户端让求职者继续后续试题回答,面试问题之间的切换时机直接决定了人机语音对话是否能够流畅地进行。一种方式可以在产品形态上做出设计,比如用户回答完一个面试问题,可通过在客户端点击一下题之类的按键触发,此类方法会将整个语音对话在形式上割裂显得不流畅,同时AI机器人在对话过程无法融入拟人化回答方式;另外一种方式将需要AI面试机器人智能判断用户当前问题回答是否结束,如果判断用户回答结束了需要切换一下面试试题,但此环节如果机器响应太快,会造成机器抢话的行为产生,就是用户尚未回答完上一试题,机器就开始了询问下一面试试题,如果响应太慢,则AI面试机器人对话迟钝不流畅。为了智能判断用户上一试题是否回答完毕,目前我们主要基于二种策略进行判定:一是基于人声检测技术(VAD)、 二是基于语义理解(NLU)判定用户是否回答完毕。基于语义理解(NLU)判定
基于语义理解的判定主要是根据用户的回答内容来判定用户当前问题是否回答完毕,具体流程如下:当用户开始回答时启动一定时器,当AI语音机器收到用户一段回复后,我们首先会通过设定的语义判断规则如拼音相似度、正则匹配等方法识别用户是否表达了回答完成当前面试问题意图。部分用户在回答完成某一试题后会按照面试开始时的提示用语告诉AI面试机器人完成了当前试题作答,如用户在结束一个问题时会说“回答完毕”、“回答完了”、“下一题”等来表达当前试题回答完成;也会存在部分用户回答完成某一试题后会陷入停顿,需要通过意图识别模型来判定用户当前回答内容是否完成,因此我们根据历史对话内容训练一个二分类模型来判定用户回答内容在语义表达上是否完整,如果用户回答戳穿不完整则机器会进行等待,并设置新的超时响应时间等待用户继续回答,否则等待超出指定时间后用户没有继续补充AI面试机器人则直接进入一下面试试题的对话环节。基于人声检测(VAD)判定
人声检测(VAD)是指从一段音频信号中判断何时人声开始与结束。为了判断求职者是否回答完当前问题,我们假设用户回答完问题后会有一个较长时间的停顿,也就是AI面试机器人会有一段时间内收到的全是非人声信号,基于此非人声时间的长段与预先设置的超时时间进行比较,一旦用户停顿时间超过设定阈值则判断用户回答完了当前问题,AI面试语音交互进入了下一试题的流程中。其中VAD判断流程是: 针对用户输入音频顺序抽取帧长为25ms语音数据,每次向前移动10ms作为步长,每一帧的音频信号通过提取声学特征如MFCC,维度为40然后进入一个序列模型LSTM来判断每一帧音频信号是否为人声非人声,如果一旦发现连续相邻的15帧的音频信号中有超过10帧判断为了人声,则认为是人声的开始,如果有15帧全部为非人声则判断为人声的结束,详细可参考技术文章<<流式和离线语音场景下的VAD语音端点检测算法实践>>。机器一旦检测到人声的结束则会启动新的计时,判断用户停顿时间,一旦停顿时间超过指定时间则认定用户回答完成当前试题直接进入下一试题。效果评价:为了评测AI面试机器人是否能够在正确的时间点切换面试试题,我们通过离线标注进行评测,比如每次随机从线上抽取一定的AI面试视频录音,由人工进行标注其中存在机器抢话行为的数量,并计算存在抢话的视频面试占比,经过线上观察我们以上二种方式的结合会将机器抢话占比维持在5%以下。
基于职位的智能问答是指在AI面试最后阶段,当求职者完成了所有面试试题回答后,AI面试机器人会询问用户是否有针对当前职位信息相关的问题需要咨询。在此阶段,AI面试机器人需要针对用户关于职位问题如工作时间、地点、薪水待遇等问题根据职位信息的描述进行作答,如果职位信息中未涉及相关问题,则会采用固定的话术进行回复。为了识别用户关于职位问题意图进行回答,我们是基于知识库问答的方式进行实现的,首先我们要将用户输入通过意图识别映射到具体的标准问题上,如“关于工作薪水是多少”,“工作时间是什么”等都属于标准问题,通常一个标准问题会对应多种相似问法。为了对用户进行智能回复,通常可通过检索式或分类式来实现,其中检索式的方式就是将用户的输入与知识库每个标准问题及其相似问法进行一一匹配,找到最语义最相近的标准问题进行回答,基于分类式的方法就是将用户输入通过分类的方式直接映射到一种意图类别上面,如果知识库中有N类标准问题,此分类模型类别数目就是N,当然在知识库设计的时候我们可以按照层级结构来组织,则用户的输入则需要通过多级分类模型映射到最终的标准问题上面去。目前我们主要采用分类的方法来实现,把用户在职位问答环节的一个输入当作一个query, 此query经过一个多分类模型,会映射到一个标准问题,获取此标准问题后再结合职位消息生成对应的答案对用户进行响应。同时由于用户在此环节也可能不会提问如表达“没有其他问题”直接结束整个面试流程,而有些用户会在同一个提问中表达多个意图如“我想问一下薪水怎么样,工作地点在哪里”等类似这样同时表达了多个意图的输入,因此针对用户提问阶段的意图识别,我们设计如下的层级结构:首先用户的输入会经过一个三分类模型:无意图,用户在此阶段没有任何疑问;单意图,用户在此阶段只询问了一个与职位相关的问题;多意图,用户在此阶段询问了多个职位相关的问题。其次,一旦机器识别用户输入为无意图,则直接根据预先设定的话术进行回复,如果是一个单意图直接通过一个多分类意图识别模型输出用户所问的职位问题类别进行回答,如果是一个多意图输入会根据标点符号进行分割然后依次送入多分类的意图识别模型并根据实际情况针对每个意图逐一回答。此多分类模型目前是采用的58开源的一款轻型预训练模型SPTM(详细见:58开源SPTM),此模型相比Bert模型而已,一是在预训练任务方面只采用了MLM任务(预测出被MASK掉的字),放弃了预测下一句的任务(NSP),在网络结构上同时支持LSTM与Transformer的结构,这样一来如采用LSTM结构则模型结构更加简单,在训练阶段对资源依赖相比Bert类预训练模型更少,训练时间上更快。
为了更加准确的识别用户一次输入中涉及到多个意图的问题,我们对模型做了一些改进,比如对原始的输入中“想咨询该工作的工作时间与地点”如果按照标点符号进行分割将不能解决此类多意图问题。因此我们针对多意图输入数据单独训练了一个多标签分类器来解决该问题,此模型上线后整体意图分类识别准确率提升了1.2%, 后续我们还尝试使用了多任务学习的方法,让单意图分类、多标签意图分类、识别当前输入是否存在多个意图的二分类模型进行联合学习,解决多标签意图分类训练资源不足的问题,在损失函数方法我们采用不同任务的损失函数进行加权获取,在训练数据方面采用金字塔式进入输入,多任务学习模型相比上一迭代整体准确率提升了0.26%。关键信息提取:
关键信息提取是针对人机对话内容进行分析挖掘求职者的用户画像,方便招聘者通过这些结构化信息设立选择条件从而快速匹配到合适的求职者。当前在面试结束后,招聘者主要关心的求职者的基本信息有:求职者最快的到岗时间、求职者目前是否在职、是否有从事过当前职位的经历、过往从事职位名称、上家公司名称等。关键信息提取流程如下图所示:
首先根据面试时的提问顺序,定位到用户回答不同问题的文本内容,再根据如正则匹配、模型分类、实体提取等方式获取关键信息属性值,由于用户表达方式多种多样,最终关键信息提取结果需要做通过归一化、实体映射等技术映射到枚举范围内。如到岗时间我们需要映射到四种类型随时到岗、一周以内、一个月以内、一个月以上,关于职位名称的提取用户表达口语化比较高频,比如询问用户做过什么工作用户会用如“炒菜的”来表明厨师职业,用“收钱的”来表明收银员等信息,因此需要做一些实体映射工作映射到标准的职位名称上。 针对不同的关键信息类型,我们采取了不同的提取方法,如针对到岗时间,我们主要采用了基于正则匹配的方式,通过分析历史对话内容,我们总结出了多种模式的正则表达式来提取具体的到岗时间,而且需要结合一些重点节日如国庆节、春节等先验信息做一些临时的校正工作。针对是否有经验、是否在职这种状态类,早期第一版本我们采用规则加正则的方式进行提取,后期了时候采用文本分类的方式,为了解决语音识别等转译错误的问题,同时针对用户回复主要是以短文本居多,采用纠错的方式收益较少,为了克服此类问题,我们主要是在字向量的语义表达上面加入了音素向量作为补充,从而解决部分同音不同义的问题,采用音素的方法后整体识别效果F1值提升了4%,在提取职位名称、公司名称的时候,这里主要采用了实体提取的方法,模型IDCNN+CRF的方法,在提取实体后需要再做一次实体链接将一些口语化表达映射到标准的职位名称或公司名称上去。
面试视频智能打点功能:

AI面试结束后,招聘者或求职者都可以看到完整的面试视频,为了能够帮助招聘者快速定位求职者在回答指定问题时的表现是否符合招聘要求,我们针对面试视频提供了打点功能,这样招聘者可以快速定位到求职者回答某问题的视频时间节点。为了完成此项工作,我们针对AI机器人与求职的语音信息单独进行存储了,同时记录下了求职者在回答每一问题的起始时间点,这样在视频合成阶段可以利用这些信息,在不同时间节点加上相关信息提示,方便用户可以快速定位面试信息内容具体所在位置。

AI面试机器人效果数据:AI面试机器人上线后极大的解决了招聘者与求职者不同时在线的问题,解决了同一招聘者无法同时响应多位请求者发起的在线化视频面试要求,有效地提升招聘者、求职者的连接效率。为了提升AI面试面试智能化、流畅度,我们在语音识别、意图识别、关键信息提取等核心环节利用深度学习技术进行持续的迭代。最终语音识别CER相比第三方通用语音识别引擎要低2.61%, 对话意图识别准确达90%以上,机器抢话占比保持在5%左右,关键信息提取准确率保持在90%以上,每天服务了上万求职者视频面试请求,显著地提升了求职者面试体验、用工企业的招聘效率。

05

 总结

本文主要介绍招聘神奇面试间的主要组成部分之一的AI面试机器人的总体架构设计,涉及到了AI面试机器人核心功能模块的实现方式如语音识别如何实现优化、面试问题之间如何流畅切换、关键信息如何提取等,未来我们将在AI面试机器人如何产出智能化面试报告上深耕细作,为业务提效赋能,进一步提升平台用户的使用体验。

作者介绍:

李忠,58同城TEG AI Lab智能语音部负责人,算法高级架构师,目前主要关注语音交互、语音分析、智能写稿中技术的落地实践


PPT下载:

关注“58AILab”公众号-部门介绍-联系我们-添加小秘书微信(WubaAILab)备注“AI面试机器人打造智能化招聘”即可获取。



AI Lab部门简介

58同城AI Lab隶属TEG技术工程平台群,成立于2018年5月,目前部门人数规模70+,包括算法、后端、大数据、产品人员。AI Lab旨在推动AI技术在58同城的落地,打造AI中台能力,以提高前台业务人效、收入和用户体验。

部门介绍,具体见:58同城AI Lab部门介绍

部门历史,具体见:58同城 TEG AI Lab 成立三周年纪念
求人才,欢迎加入:58同城AI Lab招聘产品经理、开发工程师

欢迎关注部门微信公众号:58AILab


继续滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存